import {createRouter, createWebHistory} from 'vue-router'
import HomeVies from "@/views/admin/HomeView.vue";
import IndexView from "@/views/admin/IndexView.vue";
import AdminView from "@/views/admin/AdminView.vue";
import CategoryView from "@/views/admin/CategoryView.vue";
import GoodsView from "@/views/admin/GoodsView.vue";
import OrderView from "@/views/admin/OrderView.vue";
import UserView from "@/views/admin/UserView.vue";
import LoginView from "@/views/admin/LoginView.vue";
import {useTokenStore} from '@/stores/token.js';
import UserLoginView from "@/views/user/LoginView.vue";
import UserHomeView from "@/views/user/HomeView.vue";
import UserIndexView from "@/views/user/IndexView.vue";
import RegView from "@/views/user/RegView.vue";
import SearchView from "@/views/user/SearchView.vue";
import UserGoodsView from "@/views/user/GoodsView.vue";
import CartView from "@/views/user/CartView.vue";
import CreateOrderView from "@/views/user/CreateOrderView.vue";
import CenterView from "@/views/user/CenterView.vue";
import AddrListView from "@/views/user/center/AddrListView.vue";
import CollectListView from "@/views/user/center/CollectListView.vue";
import InfoView from "@/views/user/center/InfoView.vue";
import PasswordView from "@/views/user/center/PasswordView.vue";
import RechargeView from "@/views/user/center/RechargeView.vue";
import UserOrderListView from "@/views/user/center/OrderListView.vue";
import PayView from "@/views/user/PayView.vue";

const router = createRouter({
    history: createWebHistory(import.meta.env.BASE_URL),
    routes: [
        {
            path: '/',
            name: '/user_home',
            component: UserHomeView,
            redirect: '/user/index',
            children: [
                {
                    path: '/user/login',
                    name: 'user_login',
                    component: UserLoginView
                }, {
                    path: '/user/index',
                    name: 'user_index',
                    component: UserIndexView
                }, {
                    path: '/user/search/:categoryId?',
                    name: 'user_search',
                    props: true,
                    component: SearchView
                }, {
                    path: '/user/reg',
                    name: 'user_reg',
                    component: RegView
                }, {
                    path: '/user/goods',
                    name: 'user_goods',
                    component: UserGoodsView
                }, {
                    path: '/user/cart',
                    name: 'user_cart',
                    component: CartView
                }, {
                    path: '/user/createOrder',
                    name: 'user_createOrder',
                    component: CreateOrderView
                }, {
                    path: '/user/pay',
                    name: 'user_pay',
                    component: PayView
                }, {
                    path: '/user/center',
                    name: 'user_center',
                    component: CenterView,
                    redirect: '/user/info',
                    children: [
                        {
                            path: '/user/addrList',
                            name: 'user_addrList',
                            component: AddrListView
                        }, {
                            path: '/user/collectList',
                            name: 'user_collectList',
                            component: CollectListView
                        }, {
                            path: '/user/info',
                            name: 'user_info',
                            component: InfoView
                        }, {
                            path: '/user/orderList',
                            name: 'user_orderList',
                            component: UserOrderListView
                        }, {
                            path: '/user/password',
                            name: 'user_password',
                            component: PasswordView
                        }, {
                            path: '/user/recharge/:id?',
                            name: 'user_recharge',
                            component: RechargeView
                        },
                    ]
                }
            ]
        },
        {
            path: '/admin/login',
            name: 'admin_login',
            component: LoginView
        }, {
            path: '/admin/home',
            name: 'admin_home',
            component: HomeVies,
            redirect: "/admin/index",
            children: [
                {
                    path: '/admin/index',
                    name: 'admin_index',
                    component: IndexView
                }, {
                    path: '/admin/admin',
                    name: 'admin_admin',
                    component: AdminView
                }, {
                    path: '/admin/category',
                    name: 'admin_category',
                    component: CategoryView
                }, {
                    path: '/admin/goods',
                    name: 'admin_goods',
                    component: GoodsView
                }, {
                    path: '/admin/order',
                    name: 'admin_order',
                    component: OrderView
                }, {
                    path: '/admin/user',
                    name: 'admin_user',
                    component: UserView
                }
            ]
        }
    ]
})

/*导航首位
判断页面跳转是不是合法
   合法 - 跳转
   不合法 - 跳转到登录页面
*/
router.beforeEach((to, from) => {
    //to - 跳转到的位置
    //from - 原位置
    //TODO 对其他页面放行(前代首页,搜索页,详情页,用户登录/注册页)
    if (to.path == '/admin/login'
        || to.path == '/'
        || to.path == '/user/login'
        || to.path == '/user/index'
        || to.path == "/user/reg"
        || to.path == "/user/goods"
        || to.path.startsWith("/user/search")) {
        return true;
    } else {
        //判断是否有token 有 - 放行 没有 - 跳转到登录页
        const tokenStore = useTokenStore();
        if (tokenStore.tokenStr) {
            return true;
        } else {
            //判断跳转到登录页还是用户登录页
            let currentPath = router.currentRoute.value.path;
            if (to.path.startsWith("/admin")) {
                return "/admin/login";
            } else {
                return "user/login";
            }
        }
    }
})
export default router
